// 发布单据相关API接口
import request from '../utils/request.js'

/**
 * 获取发布单据列表
 * @param {Object} params 查询参数
 * @param {string} params.type 单据类型 (group, demand, processing, material, inventory)
 * @param {string} params.product_category 产品类别
 * @param {string} params.province 省份
 * @param {string} params.city 城市
 * @param {string} params.district 区县
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getPublishList(params = {}) {
  return request.get('publish/list', params, {
    noAuth: true
  })
}

export function getPublishHomeList(params = {}) {
  return request.get('publish/home-list', params, {
    noAuth: true
  })
}

/**
 * 获取发布单据详情
 * @param {number} id 发布单据ID
 */
export function getPublishDetail(id) {
  return request.get(`publish/detail/${id}`)
}

/**
 * 创建发布单据
 * @param {Object} data 发布单据数据
 * @param {string} data.type 单据类型 (group, demand, processing, material, inventory)
 * @param {string} data.product_category 产品类别
 * @param {string} data.product_name 产品名称
 * @param {string} data.product_model 产品型号
 * @param {string} data.total_amount 总数量
 * @param {string} data.spec 规格/数量 (JSON字符串)
 * @param {string} data.remark 备注
 * @param {string} data.province 省份
 * @param {number} data.province_id 省份ID
 * @param {string} data.city 城市
 * @param {number} data.city_id 城市ID
 * @param {string} data.district 区县
 * @param {number} data.district_id 区县ID
 * @param {string} data.detail_address 详细地址
 * @param {string} data.contact_name 联系人
 * @param {string} data.contact_phone 联系电话
 * @param {string} data.contact_email 联系邮箱
 */
export function createPublish(data) {
  return request.post('publish/create', data)
}

/**
 * 修改发布单据
 * @param {number} id 发布单据ID
 * @param {Object} data 发布单据数据
 */
export function editPublish(id, data) {
  return request.post(`publish/edit/${id}`, data)
}

/**
 * 删除发布单据
 * @param {number} id 发布单据ID
 */
export function deletePublish(id) {
  return request.delete(`publish/del/${id}`)
}

/**
 * 关闭发布单据
 * @param {number} id 发布单据ID
 */
export function closePublish(id, data) {
  return request.post(`publish/close/${id}`, data)
}

/**
 * 批量删除发布单据
 * @param {Array<number>} ids 发布单据ID数组
 */
export function batchDeletePublish(ids) {
  return request.post('publish/batch_del', { ids })
}

/**
 * 创建拼单
 * @param {Object} data 拼单数据
 */
export function createGroup(data) {
  return createPublish({
    ...data,
    type: 'group'
  })
}

/**
 * 创建求购
 * @param {Object} data 求购数据
 */
export function createDemand(data) {
  return createPublish({
    ...data,
    type: 'demand'
  })
}

/**
 * 创建加工
 * @param {Object} data 加工数据
 */
export function createProcessing(data) {
  return createPublish({
    ...data,
    type: 'processing'
  })
}

/**
 * 创建材料
 * @param {Object} data 材料数据
 */
export function createMaterial(data) {
  return createPublish({
    ...data,
    type: 'material'
  })
}

/**
 * 创建库存
 * @param {Object} data 库存数据
 */
export function createInventory(data) {
  return createPublish({
    ...data,
    type: 'inventory'
  })
}

/**
 * 参与单据
 * @param {number} publishId 发布单据ID
 * @param {Object} extraData 额外数据（可选）
 * @param {string} extraData.remark_corp 公司名
 * @param {string} extraData.remark_name 联系人姓名
 * @param {string} extraData.remark_phone 手机号
 * @param {string} extraData.remark_content 留言内容
 */
export function participatePublish(publishId, extraData = {}) {
  return request.post('publish/participate', { 
    publish_id: publishId,
    ...extraData
  })
}

/**
 * 退出参与
 * @param {number} publishId 发布单据ID
 */
export function quitPublish(publishId) {
  return request.post('publish/quit', { publish_id: publishId })
}

/**
 * 获取我参与的单据列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyParticipatedList(params = {}) {
  return request.get('publish/my_participated_list', params)
}

/**
 * 我的单据分类接口
 */

/**
 * 获取我的加工列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyProcessingList(params = {}) {
  return request.get('publish/my_processing', params)
}

/**
 * 获取我的材料列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyMaterialList(params = {}) {
  return request.get('publish/my_material', params)
}

/**
 * 获取我的库存列表（散料）
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyInventoryList(params = {}) {
  return request.get('publish/my_inventory', params)
}

/**
 * 获取我的拼单列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyGroupList(params = {}) {
  return request.get('publish/my_group', params)
}

/**
 * 获取我的求购列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyDemandList(params = {}) {
  return request.get('publish/my_demand', params)
}

/**
 * 获取我的询价列表
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyInquiryList(params = {}) {
  return request.get('publish/my_inquiry', params)
}

/**
 * 获取我的接单列表（参与的求购单据）
 * @param {Object} params 查询参数
 * @param {number} params.page 页码
 * @param {number} params.limit 每页数量
 */
export function getMyOrderList(params = {}) {
  return request.get('publish/my_order', params)
}

/**
 * 设置参与记录已读状态
 * @param {number} participantId 参与记录ID
 * @param {number} isRead 已读状态，0未读，1已读
 */
export function setReadStatus(participantId, isRead = 1) {
  return request.post('publish/set_read_status', {
    participant_id: participantId,
    is_read: isRead
  })
}

/**
 * 获取企业单据列表（企业产品）
 * @param {Object} params 查询参数
 * @param {number} params.page 页码，默认1
 * @param {number} params.limit 每页数量，默认20
 * @param {string} params.keyword 搜索关键词（可选）
 * @param {string} params.type 单据类型（可选）
 * @param {string} params.product_category 产品类别（可选）
 * @param {string} params.province 省份（可选）
 * @param {string} params.city 城市（可选）
 * @param {string} params.district 区县（可选）
 */
export function getEnterprisePublishList(params = {}) {
  return request.get('publish/enterprise', params)
}

